A controller area network (CAN) standard defines a message-based protocol that can be utilized to transmit and receive messages between multiple control nodes over a shared bus. This technology is widely utilized in the automotive and aerospace industries to transmit messages through vehicles and airplanes, for example, communicating sensory input or device states between various control nodes over the bus.
The control nodes with messages to send can arbitrate utilization of the bus based on an identification field in the messages, as a value in the identification field can both identify the message and indicate a priority of the message. During arbitration, control nodes can begin transmitting their corresponding message on the bus during a transmission period and listen to the bus to determine whether the identification field of their message was overwritten by a message from a competing control node. If the identification field of their message was not overwritten, the control node has control over the bus and can continue to transmit the message. When the identification field of their message is overwritten, however, the control node loses bus arbitration to another control node with a dominant priority annunciated by the identification field in the message.
Since the controller area network allows for distributed controller-based arbitration, the controller area network can experience long worst-case latencies for messages blocked from accessing the bus by other, higher-priority messages. In an effort to make a controller area network deterministic, i.e., ensuring every message can be delivered through the controller area network by their respective deadlines, a new standard was promulgated by Aeronautical Radio, Incorporated (ARINC), called ARINC 825, which defines a specification that pre-schedules each message capable of being transmitted over the bus into various time slots of a static schedule table. Since each time slot can correspond a time period large enough for the bus to accommodate multiple message transmissions, multiple control nodes can pre-schedule one or more messages to each time slot of their corresponding static schedule table. To help ensure every message pre-scheduled to a time slot can gain access to the bus during that time slot, the ARINC 825 standard also places a limitation bus load of no more than 50% utilization.
As controller area networks become more sophisticated, however, the ability for system designers to identify or define a static schedule table for each control node that complies with the bus load and other constraints of ARINC 825 is challenging and time-consuming. When pre-scheduling every message becomes difficult, system designers often alter system specifications, such as bus speed, time slot duration, or the like, or alter a number of messages capable of transmission, number of control nodes in the controller area network, or the like, which intentionally under-utilizes system resources in order to meet the ARINC 825 standard.